//package com.sf.fy.uav.common.utils;
//
//import io.micrometer.common.util.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Component;
//
//import java.util.Objects;
//import java.util.concurrent.TimeUnit;
//
///**
// * @author 01430312
// */
//@Component
//public class RedisLockUtils {
//    private final static Logger logger = LoggerFactory.getLogger(RedisLockUtils.class);
//    @Autowired
//    private RedisTemplate redisTemplate;
//
//    /**
//     * lockKey 锁 key
//     * value 身份标识（保证锁不会被其他人释放）
//     * expireTime 锁的有效时间
//     **/
//    public Boolean lock(String lockKey, String value, long expireTime) {
//        Boolean isLock = false;
//        try {
//            isLock = redisTemplate.opsForValue().setIfAbsent(lockKey, value, expireTime, TimeUnit.SECONDS);
//            if (isLock) {
//                return true;
//            }
//        } catch (Exception e) {
//            throw new RuntimeException("redis连接异常");
//        } finally {
//            if (!isLock) {
//                logger.info("获取锁失败，锁重入中...");
//                lock(lockKey, value, expireTime);
//            }
//        }
//        return false;
//    }
//
//    /**
//     * key 锁的key
//     * value 身份标识
//     * return 成功返回true 失败返回false
//     **/
//    public Boolean unlock2(String key, String value) {
//        // 获取当前锁的拥有者
//        Object currentValue = redisTemplate.opsForValue().get(key);
//        Boolean result = false;
//        // 判断value是否为锁的拥有者
//        if (StringUtils.isNotEmpty(String.valueOf(currentValue)) && Objects.equals(currentValue, value)) {
//            //删除锁
//            result = redisTemplate.opsForValue().getOperations().delete(key);
//        }
//        return result;
//    }
//}
